JVM 面试复习要点

Java基础知识

线程

集合类

  • HashMap的实现原理,和Hashtable的比较

  • TreeMap, LinkedHashMap, concurrentHashMap, WeakHashMap

  • ArrayList, LinkedList的实现原理和区别

  • HashSet的实现原理

反射机制

动态代理机制(JDK自带的动态代理和CGLIB的动态代理)

序列化

IO

NIO

  • Buffer

  • Channel

  • Selector

  • netty

抽象类和接口(各自的特点和比较)

JVM虚拟机

内存模型(java 8 中的元空间)

垃圾回收机制

垃圾回收器

类文件结构

类加载机制

JVM性能调优

Spring

bean相关

控制反转

面向切面

事务管理(传播机制)

SpringMVC基本原理

数据库

SQL语法

MYSQL索引的实现

数据库的各种锁

死锁和如何避免死锁

ACID特性

数据库的隔离级别

SQL优化

JOIN的原理

Hebinate

分布式事务的一致性和JTA

  • XA协议,事务管理器,资源管理器

  • 两阶段提交,三阶段提交协议, TCC

  • Spring下配置JTA

网络

TCP 三次握手/四次分手

  • 三次:防止已失效的报文到达服务器端,浪费资源

  • 四次:等待2MSL时间,确保自己发送的ACK已收到,确认对方已经关闭,自己再关闭

HTTP状态码

  • 2XX:操作成功

  • 3XX:重定向,301永久转移,302临时转移

  • 4XX:客户端错误, 403禁止访问,404页面找不到

  • 5XX:服务器端错误

Session和Cookie

  1. session在服务器端,cookie在客户端(浏览器);
  2. Session的运行依赖session id, 而 session id是存在cookie中的,也就是说,如果浏览器禁止了cookie,同时session也会失效(但是可以通过其它方式实现,比如在url中传递session id);
  3. Session可以放在文件、数据库或内存中都可以;
  4. 用户验证一般会用session;
  5. Cookie不是很安全,别人可以分析存在本地的cookie并进行cookie欺骗,考虑到安全应当使用session;
  6. Session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie;
  7. 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。